<?php
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// NOTICE OF COPYRIGHT                                                    //
//                                                                        //
// Dean`s Office for Moodle                                               //
// Электронный деканат                                                    //
// <http://deansoffice.ru/>                                               //
//                                                                        //
// Copyright (C) 2012-2999  Kirill Krasnoschekov (Кирилл Краснощёков)     //
//                                                                        //
// This program is free software: you can redistribute it and/or modify   //
// it under the terms of the GNU General Public License as published by   //
// the Free Software Foundation, either version 3 of the Licensen.        //
//                                                                        //
// This program is distributed in the hope that it will be useful,        //
// but WITHOUT ANY WARRANTY; without even the implied warranty of         //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          //
// GNU General Public License for more details.                           //
//                                                                        //
// You should have received a copy of the GNU General Public License      //
// along with this program.  If not, see <http://www.gnu.org/licenses/>.  //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

require_once(dirname(realpath(__FILE__)).'/presentation.php');



/**
 * class DOFPresentation
 * 
 * Отображает гостевую книгу в виде блока Moodle
 * 
 * @author Кирилл Краснощёков
 */
class DOFPresentation extends Presentation
{
    // Форма добавления сообщений
    private $msgAddForm;
    
    // Форма редактирования сообщений
    private $msgUpdateForm;
    
    // Форма комментирования
    private $cmtForm;


    
    /**
     * Конструктор
     *
     * @param array $tmpl См. класс-родитель
     * @param array $globalVars См. класс-родитель
     * @param object $content переменная из класса block_base вызывающего блока
     * @author Кирилл Краснощёков
     */
    public function __construct
    ($tmpl, $globalVars, &$msgAddForm, &$msgUpdateForm, &$cmtForm)
    {
        //Вызвать конструктор родителя
        parent::__construct($tmpl, $globalVars);
        //Формы
        $this->msgAddForm = $msgAddForm;
        $this->msgUpdateForm = $msgUpdateForm;
        $this->cmtForm = $cmtForm;
    }
    
    /**
     * Напечатать "шапку"
     * 
     * @author Кирилл Краснощёков 
     */
    public function PrintHeader() 
    {
        parent::PrintHeader();
    }
    
    /**
     * Напечатать форму добавления сообщения
     * 
     * @author Кирилл Краснощёков 
     */
    public function PrintMessageForm(array $message) 
    {
        //Установка значений формы
        $this->msgAddForm->set_data($message);
        $this->Out($this->msgAddForm->to_html());
    }
    
    /**
     * Напечатать сообщение с формой редактирования
     * 
     * @author Кирилл Краснощёков
     */
    public function PrintMessage(array $message) 
    {
        parent::PrintMessage($message);
        
        //Обёртка для авто-скрытия
        $data = $message + $this->globalVars;
        $this->Out($this->Substitute($data, $this->tmpl['MessageFormOpen']));

        //Установка значений формы
        $data = array_merge($message, array('msgid' => $message['id']));
        $this->msgUpdateForm->set_data($data);
        $this->Out($this->msgUpdateForm->to_html());

        //Обёртка для авто-скрытия
        $this->Out($this->Substitute($data, $this->tmpl['MessageFormClose']));
    }
    
    /**
     * Напечатать форму добавления комментария
     * 
     * @author Кирилл Краснощёков
     */
    public function PrintCommentForm(array $message) 
    {
        //Обёртка для авто-скрытия
        $data = $message + $this->globalVars;
        $this->Out($this->Substitute($data, $this->tmpl['CommentFormOpen']));

        //Установка значений формы
        $this->cmtForm->set_data($message);
        $this->Out($this->cmtForm->to_html());

        //Обёртка для авто-скрытия
        $this->Out($this->Substitute($data, $this->tmpl['CommentFormClose']));
    }
    
    /**
     * Напечатать комментарий
     * 
     * @author Кирилл Краснощёков
     */
    public function PrintComment(array $comment)
    {
        parent::PrintComment($comment);
    }
    
    /**
     * Напечатать "подвал"
     * 
     * @author Кирилл Краснощёков
     */
    public function PrintFooter($time)
    {
        parent::PrintFooter($time);
        #$this->content->footer .= 
        #        $this->Substitute(array('time' => $time), $this->tmpl['Footer']);
    }
    
    /**
     * Напечатать строку
     *
     * Абстрагирует класс-родитель от конкретного способа вывода
     * (сразу, в переменную и т.п.). 
     * Вызывается методами класса-родителя.
     * 
     * @param string $string
     * @author Кирилл Краснощёков
     */
    protected function Out($string)
    {
        echo $string; 
    }
}

?>